package com.chenhs.oop.study.反射.实例.reflect;

import com.chenhs.oop.study.反射.实例.dao.IUserDao;
import com.chenhs.oop.study.反射.实例.dao.impl.UserDaoImpl;
import com.chenhs.oop.study.反射.实例.service.IUserService;
import com.chenhs.oop.study.反射.实例.service.impl.UserServiceIpml;

import java.util.HashMap;

/**
 * <ul>peanut 配置上下文
 * <li> Author:      chenhs</li>
 * <li>E-Mail:    </li>
 * <li> Date:     2021/6/5 - 20:10</li>
 * <li>Description:        注释  </li>
 * <li>+-History-------------------------------------+</li>
 * <li>| Date          Author       Description    </li>
 * <li>|2021/6/5 - 20:10         chenhs       Created   </li>
 * <li>+------------------------------------------------</li>
 * </ul>
 */
// 使用时传一个类过来，在getBean这个方法获取实例时，通过传过过来的类强转。
public class ApplictionContext<T> {
	//存 实例的hash对象
	private   static  HashMap<Class ,Object> beanFactory = new HashMap<>();
	
	public   T getBean(Class clazz){
		return  (T) beanFactory.get(clazz);
	}
	
	/**
	 *
	 * @Description 初始化环境必要实例完成对象创建
	 *
	 * @author chenhs
	 * @Date 2021/6/5
	 * @return
	 */
	public  static void initContext(){
		beanFactory.put(IUserDao.class,new UserDaoImpl<>());
		beanFactory.put(IUserService.class,new UserServiceIpml());
	}
	
	
}
